package com.demo.designmode.builder.case1;

import java.util.UUID;

/**
 * @author jiaxXM
 * @date 2024/9/19
 */
public class Test2 {

    /**
     * 方案一：
     * 上面这样，显然比直接用有参构造器要好很多，因为这样就可以创建对象和赋值分开进行，一眼就可以看出对什么属性值赋值，而且如果加一个字段，
     * 我们不需要再每一处都去修改，因为用的是无参构造器，是不是这样写就是万全之计呢？
     * 也不是，因为这样创建对象和赋值是分开的，各个参数的初始化被放到了不同的方法中调用，
     * 这会导致严重的线程不安全问题(使用构造器则不会有这个问题)，对象在一连串的set方法中，可能会出现状态不一致的情况，这是应该尽量避免的。
     * @param args
     * @throws Exception
     */
    public static void main(String[] args) throws Exception {
        User user = new User();
        user.setId(UUID.randomUUID().toString().replaceAll("-", ""));
        user.setName("张三");
        user.setAge(20);
        user.setGender("男");
        user.setPhone("135461852xx");
        user.setAddress("广州天河");
        System.out.println(user);
    }
}
